package com.demo.books;

import com.demo.common.model.Books;
import com.demo.common.util.StringUtil;
import com.jfinal.aop.Before;
import com.jfinal.aop.Inject;
import com.jfinal.core.Controller;
import com.jfinal.kit.Kv;
import com.jfinal.kit.StrKit;


/**
 * 本 com.demo 仅表达最为粗浅的 jfinal 用法，更为有价值的实用的企业级用法
 * 详见 JFinal 俱乐部: http://jfinal.com/club
 * 
 * 所有 sql 与业务逻辑写在 Service 中，不要放在 Model 中，更不
 * 要放在 Controller 中，养成好习惯，有利于大型项目的开发与维护
 */
@Before(BookInterceptor.class)
public class BookController extends Controller {
	
	@Inject
	BookService service;

	//加载图书管理页面
	public void index() {
		Kv cond=Kv.create();
		if(StrKit.notBlank(getPara("bookno"))){
			cond.set("bookno",getPara("bookno"));
		}
		if(StrKit.notBlank(getPara("bookname"))){
			cond.set("bookname",getPara("bookname"));
		}
		if(StrKit.notBlank(getPara("author"))){
			cond.set("author",getPara("author"));
		}
		if(StrKit.notBlank(getPara("publisher"))){
			cond.set("publisher",getPara("publisher"));
		}
		setAttr("bookPage", service.paginate(getParaToInt(0, 1), 10,Kv.by("cond",cond)));
		render("books.html");
	}

	//加载图书管理添加页面
	public void add() {
	}
	
	/**
	 * save 与 update 的业务逻辑在实际应用中也应该放在 serivce 之中，
	 * 并要对数据进正确性进行验证，在此仅为了偷懒
	 */
	//图书管理添加
	@Before(BookValidator.class)
	public void save() {
		Books books=getBean(Books.class);
		books.setBookno(StringUtil.getOrderNo());
		books.setCreatedate(StringUtil.strToTimeStamp());
		books.setUpdatedate(StringUtil.strToTimeStamp());
		books.save();
		redirect("/books");
	}

	//加载图书管理编辑页面
	public void edit() {
		setAttr("books", service.findById(getParaToInt()));
	}
	
	/**
	 * save 与 update 的业务逻辑在实际应用中也应该放在 serivce 之中，
	 * 并要对数据进正确性进行验证，在此仅为了偷懒
	 */
	//图书管理编辑
	@Before(BookValidator.class)
	public void update() {
		Books books=getBean(Books.class);
		//books.setBookno(StringUtil.getOrderNo());
		books.setUpdatedate(StringUtil.strToTimeStamp());
		books.update();
		redirect("/books");
	}

	//图书管理删除
	public void delete() {
		service.deleteById(getParaToInt());
		redirect("/books");
	}

	//加载图书管理借书页面
	public void borrow(){
		setAttr("bookid", getParaToInt());
	}
}


